<?php
session_cache_limiter("nocache");
require_once('../utilidades/ConexionBD.php');

class SeguridadUsuario {

    private $id = 0;
    private $fechaGrab;
    private $activo;
    private $codUsuario;
    private $nombreUsuario;
    private $login;
    private $password;

    function __construct() {}

    public static function login($host, $login, $password) {
        $consulta = "select * from \"FuncSeguridadUsuario\"('login','" . $host . "',NULL,NULL,NULL,NULL,NULL,'" . $login . "','" . $password . "');";

        $res = pg_query(ConexionBD::get()->conectarse(), $consulta);

        if (!$res)
            return str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()));

        ConexionBD::get()->desconectarse();

        while ($row = pg_fetch_array($res)) {
            $obj = new SeguridadUsuario();
            $obj->id = $row["@id"];
            $obj->activo = $row["@activo"];
            $obj->codUsuario = $row["@codUsuario"];
            $obj->nombreUsuario = $row["@nombreUsuario"];
            $obj->login = $row["@login"];
            return $obj;
        }
        
        return null;
    }

    //--- Metodos        
    public function selectThisByCodigo($codUsuario) {
        //--- defino el codigo
        $this->codUsuario = $codUsuario;
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('selectByCodigo',NULL,NULL,NULL,NULL,'" . $this->codUsuario . "',NULL,NULL,NULL);";
        //--- Obtengo los datos de postgres
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            return json_encode(array("ERROR" => str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()))));
        }

        while ($row = pg_fetch_array($res)) {
            $this->id = $row["@id"];
            $this->fechaGrab = $row["@fechaGrab"];
            $this->usuarioGrab = $row["@usuarioGrab"];
            $this->activo = $row["@activo"];
            $this->codUsuario = $row["@codUsuario"];
            $this->nombreUsuario = $row["@nombreUsuario"];
            $this->login = $row["@login"];
            $this->password = $row["@password"];
        }
        ConexionBD::get()->desconectarse();
        return json_encode("");
    }

    //--- Metodos        
    public static function selectById($id) {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('selectById',NULL," . $id . ",NULL,NULL,NULL,NULL,NULL,NULL);";
        //--- Obtengo los datos de postgres
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            return json_encode(array("ERROR" => str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()))));
        }

        //--- Cierro la conexion
        ConexionBD::get()->desconectarse();

        while ($row = pg_fetch_array($res)) {
            $list = array(
                "id" => $row["@id"],
                "fechaGrab" => $row["@fechaGrab"],
                "activo" => $row["@activo"],
                "codUsuario" => $row["@codUsuario"],
                "nombreUsuario" => $row["@nombreUsuario"],
                "login" => $row["@login"],
                "password" => $row["@password"]
            );
            return json_encode($list);
        }
        return json_encode("");
    }

    public static function selectSupervisoresHTMLSelectFormat() {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('selectSupervisores',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);";
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            echo str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()));
            return null;
        }
        //--- debo armar una lista de objetos        
        $html = "<option value=''>Seleccionar</option>";
        while ($row = pg_fetch_array($res)) {
            $html = $html . "<option value='" . $row["@codUsuario"] . "'>" . $row["@nombreUsuario"] . "</option>";
        }
        //-- Cierro la conexion
        ConexionBD::get()->desconectarse();
        //-- retorno la lista de objetos
        return $html;
    }

    public static function selectEstibadoresHTMLSelectFormat() {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('selectEstibadores',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);";
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            echo str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()));
            return null;
        }
        //--- debo armar una lista de objetos        
        $html = "<option value=''>Seleccionar</option>";
        while ($row = pg_fetch_array($res)) {
            $html = $html . "<option value='" . $row["@codUsuario"] . "'>" . $row["@nombreUsuario"] . "</option>";
        }
        //-- Cierro la conexion
        ConexionBD::get()->desconectarse();
        //-- retorno la lista de objetos
        return $html;
    }

    public static function selectAllHTMLSelectFormat() {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('selectAll',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);";
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            echo str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()));
            return null;
        }
        //--- debo armar una lista de objetos        
        $html = "<option value=''>Seleccionar</option>";
        while ($row = pg_fetch_array($res)) {
            $html = $html . "<option value='" . $row["@codUsuario"] . "'>" . $row["@nombreUsuario"] . "</option>";
        }
        //-- Cierro la conexion
        ConexionBD::get()->desconectarse();
        //-- retorno la lista de objetos
        return $html;
    }

    public static function selectAllHTMLTableFormat($numPagina, $registrosPorPagina, $campoFiltroOrden, $valorFiltro) {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"(
                'selectAll'
                ,'" . $numPagina . "|" . $registrosPorPagina . "|" . $campoFiltroOrden . "|" . $valorFiltro . "'
                ,NULL,NULL,NULL,NULL,NULL,NULL,NULL);";
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            echo str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()));
            return null;
        }

        //--- debo armar una lista de objetos        
        $html = "";
        while ($row = pg_fetch_array($res)) {
            $html = $html . "<tr id='" . $row["@id"] . "'>";
            $html = $html . "<td><a href='#' class='link_editar'>" . $row["@codUsuario"] . "</a></td>";
            $html = $html . "<td>" . $row["@nombreUsuario"] . "</td>";
            $html = $html . "<td>" . $row["@login"] . "</td>";
            $html = $html . "<td><b>" . ($row["@activo"] === "t" ? "<span style='color: rgb(14,51,22)'>SI</span>" : "<span style='color: rgb(184,35,35)'>NO</span>" ) . "</b></td>";
            $html = $html . "<td><img class='icon-remove' id='icon-remove' src='../recursos/imagenes/remove.png' title='Eliminar el Registro'></td>";
            $html = $html . "</tr>";
        }
        //-- Cierro la conexion
        ConexionBD::get()->desconectarse();
        //-- retorno la lista de objetos
        return $html;
    }

    public static function update($codUsuarioGrab, $id, $activo, $codUsuario, $nombreUsuario, $login, $password) {
        //--- verifico que el registro actual exista
        if ($id == 0) {
            return;
        }
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('update',NULL," . $id . ",NULL,'" . (($activo) ? 'true' : 'false') . "','" . $codUsuario . "','" . $nombreUsuario . "','" . $login . "','" . $password . "');";
        //--- Obtengo los datos de postgres
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            return json_encode(array("ERROR" => str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()))));
        }
        ConexionBD::get()->desconectarse();
        return json_encode("");
    }

    public static function insert($codUsuarioGrab, $activo, $codUsuario, $nombreUsuario, $login, $password) {
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('insert',NULL,NULL,NULL,'" . (($activo) ? 'true' : 'false') . "','" . $codUsuario . "','" . $nombreUsuario . "','" . $login . "','" . $password . "');";
        //--- Obtengo los datos de postgres
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            return json_encode(array("ERROR" => str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()))));
        }
        ConexionBD::get()->desconectarse();
        //--- debo retornar el id que se genero al hacer la insercion
        while ($row = pg_fetch_array($res)) {
            return json_encode(array("id" => $row["@id"]));
        }
        //-- retorno sino devolvio un id, retorno cero para que no se generen erroes en la vista
        return json_encode(array("id" => "0"));
    }

    public function delete($codUsuarioGrab, $id) {
        //--- verifico que el registro actual exista
        if ($id == 0) {
            return;
        }
        //---  cargo la informacion desde la BD
        $consulta = "select * from \"FuncSeguridadUsuario\"('delete',NULL," . $id . ",NULL,NULL,NULL,NULL,NULL,NULL);";
        //--- Obtengo los datos de postgres
        @$res = pg_query(ConexionBD::get()->conectarse(), $consulta);
        //--- veo si se presento algun error
        if (!$res) {
            return json_encode(array("ERROR" => str_replace("ERROR:", "", pg_last_error(ConexionBD::get()->conectarse()))));
        }
        ConexionBD::get()->desconectarse();
        return json_encode("");
    }

    //--- Setters y Getters
    public function getId() {
        return $this->id;
    }

    public function getFechaGrab() {
        return $this->fechaGrab;
    }

    public function getUsuarioGrab() {
        return $this->usuarioGrab;
    }

    public function getActivo() {
        return $this->activo;
    }

    public function getCodUsuario() {
        return $this->codUsuario;
    }

    public function getNombreUsuario() {
        return $this->nombreUsuario;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function setFechaGrab($fechaGrab) {
        $this->fechaGrab = $fechaGrab;
    }

    public function setUsuarioGrab($usuarioGrab) {
        $this->usuarioGrab = $usuarioGrab;
    }

    public function setActivo($activo) {
        $this->activo = $activo;
    }

    public function setCodUsuario($codUsuario) {
        $this->codUsuario = $codUsuario;
    }

    public function setNombreUsuario($nombreUsuario) {
        $this->nombreUsuario = $nombreUsuario;
    }

    public function getLogin() {
        return $this->login;
    }

    public function setLogin($login) {
        $this->login = $login;
    }

    public function getPassword() {
        return $this->password;
    }

    public function setPassword($password) {
        $this->password = $password;
    }

//--- FIN Setters y Getters
}

?>
